﻿#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

/*int main()
{
	printf("%d", printf("%d", printf("%d", 43)));//4321

	return 0;
}*/
//printf函数返回的是打印在屏幕上的字符的个数.

//函数的定义和声明

#include "add.h"

/*int main()
{
	int a = 0;
	int b = 0;
	scanf("%d%d", &a, &b);
	int ret = Add(a, b);
	printf("%d\n", ret);

	return 0;
}*/

//stadic修饰局部变量

/*void test()
{
	int i = 0;
	i++;
	printf("%d ", i);
}
int main()
{
	int i = 0;
	for (i = 0; i < 5; i++)
	{
		test();
	}
	return 0;
}*/
//代码1的test函数中的局部变量i是每次进⼊test函数先创建变量（⽣命周期开始）并赋值为0，然后
//++，再打印，出函数的时候变量⽣命周期将要结束（释放内存）。

/*void test()
{
	//static修饰局部变量
	static int i = 0;
	i++;
	printf("%d ", i);
}
int main()
{
	int i = 0;
	for (i = 0; i < 5; i++)
	{
		test();
	}
	return 0;
}*/
//代码2中，我们从输出结果来看，i的值有累加的效果，其实 test函数中的i创建好后，出函数的时候是
//不会销毁的，重新进⼊函数也就不会重新创建变量，直接上次累积的数值继续计算。

//结论：static修饰局部变量改变了变量的⽣命周期，⽣命周期改变的本质是改变了变量的存储类型，本
//来⼀个局部变量是存储在内存的栈区的，但是被 static 修饰后存储到了静态区。存储在静态区的变
//量和全局变量是⼀样的，⽣命周期就和程序的⽣命周期⼀样了，只有程序结束，变量才销毁，内存才
//回收。但是作⽤域不变的。